//------------------------------------------------------------------------
//                              AAreas
//------------------------------------------------------------------------
/** @file AAreas.java
 *
 * Autores: Guillermo Garcia Juanes
 *          Jose Hernandez Gonzalez
 * Octubre de 2011
 *
 * Procesadores de Lenguajes
 * Practica 2
 *
 * Descripcion:
 *  Clase encargada de contabilizar los ambitos
 *  de un fichero.
 *  
 */
package pl.equipo13.p2;

public class AAreas {
	private int MaxAreas;         // Numero maximo de ambitos
	private int CurrentAreas;     // Numero de ambitos activos en un momento
	private StringBuffer report;  // Informe sobre ambitos
	
	/**
	 * Constructor,
	 * Prepara el Stringbuffer para el informe para ir anadiendo.
	 */
	public AAreas(){
		this.CurrentAreas = 0;
		report = new StringBuffer("\n\n//---------- INFORME SOBRE AMBITOS\n\n");
	}
	
	/**
	 * OpenArea,
	 * abre un nuevo ambito del programa.
	 */
	public void OpenArea(){
		for(int i = 0; i < CurrentAreas; i++)
			this.report.append("\t");
		this.report.append("Ambito: " + (this.CurrentAreas + 1) 
				+ "\n");
		this.MaxAreas++;
		this.CurrentAreas++;
	}
	
	/**
	 * CloseArea,
	 * cierra un ambito del programa.
	 */
	public void CloseArea(){
		this.CurrentAreas--;
	}
	
	/**
	 * Report,
	 * Retorna el informe sobre los ambitos de un programa
	 * @return
	 */
	public StringBuffer Report(){
		this.report.append("\nNumero maximo de ambitos: " + this.MaxAreas);
		if (this.CurrentAreas > 0)
            this.report.append("\nError en ambitos. Ambitos no completos." + this.CurrentAreas);
		return report;
	}
}
